/**
1,提示用户输入数组大小
2,提示用户输入元素内容,并询问是否继续
3,判断已存个数占总个数的比例,达到80%就扩容1.5倍,所谓数组扩容就是新建数组并复制远数组的元素,然后重新赋值覆盖原数组
*/

import java.util.Scanner;
import java.util.Arrays;

public class Arrays_Add_Test{

	public static void main (String[] args){

		//声明一个int类型的一位数组,长度由用户自行输入
		Scanner sc = new Scanner(System.in);

		System.out.println("请输入数组元素个数: ");
		int capacity = sc.nextInt();
		int[] arr = new int[capacity];
		System.out.println("数组的元素个数为: " + arr.length);

		//提醒用户输入元素值用以存储在数组中,并检测数组容量
		boolean flag = false;
		int stock = 1;
		String instruct;

		while(!flag) {
			System.out.println("请输入第" + stock + "个元素:");
            arr[stock-1] = sc.nextInt();
            System.out.println();
            System.out.println(Arrays.toString(arr));
           
            //扩容
            if(stock>=arr.length*4/5) {
                System.out.println("存储达到容量的80%, 扩容至1.5倍");
                // 增加数组容量为原来的1.5倍
                int[] arr2 = new int[arr.length*3/2];
                //将原来数组的元素复制到扩容后的数组中
                for(int i=0; i<arr.length; i++) {
                    arr2[i] = arr[i];
                }
                arr = arr2; //将arr指向扩容后的数组
                System.out.println("数组容量：" + arr.length + " (已存储：" + stock + ")");
            }
           
            System.out.println("是否继续输入？(y/n)");
            instruct = sc.next();
            flag = (instruct.equals("n")) ? true : false;
           
            if(flag){
                System.out.println("输入结束！" );
                System.out.println("您现在得到的数组是：");
                System.out.println(Arrays.toString(arr));
                System.out.println("数组的容量为：" + arr.length + "(已存储：" + stock + ")");
            }
           
            stock++;
		}


	}
}